#!/usr/bin/env bash
set -e

# 1. 使用 buildx 构建镜像，确保 --platform 标志生效
docker buildx build --platform linux/amd64 -t webrtc-build-env --load .

# 2. 运行编译 (同样指定平台)
docker run --rm --platform linux/amd64 \
  -v "$(pwd)":/webrtc \
  -v "$(pwd)/output":/output \
  webrtc-build-env \
  bash -c "
    set -e
    cd /webrtc

    # ------------------- 重要说明：编译模式选择 -------------------
    #
    # 【模式一：首次编译或更新分支】
    # 运行下面的 'gclient sync'。它会完整同步所有依赖，但速度较慢。
    # echo 'Syncing dependencies for a full build...'
    # gclient sync --with_branch_heads --force

    # 【模式二：日常增量编译】
    # 为了快速编译，请注释掉上面的 'gclient sync'，
    # 然后取消下面 'gclient runhooks' 的注释。
    # 'runhooks' 会跳过缓慢的依赖检查，只执行必要的环境设置，速度很快。
    #
    echo 'Running hooks for an incremental build...'
    gclient runhooks

    # --- 后续步骤都在 /webrtc/src 目录中执行 ---
    cd /webrtc/src

    # c. 安装 sysroot
    echo 'Installing sysroot...'
    build/linux/sysroot_scripts/install-sysroot.py --arch=amd64

    # d. 编译
    echo 'Generating build files...'
    gn gen out/linux --args='is_debug=false is_component_build=false is_clang=true rtc_include_tests=false rtc_build_examples=false proprietary_codecs=true use_rtti=true use_custom_libcxx=true rtc_use_x11=false treat_warnings_as_errors=false rtc_build_tools=false target_os=\"linux\" target_cpu=\"x64\"'
    
    echo 'Building WebRTC...'
    ninja -C out/linux webrtc

    # e. 合并所有 .a 文件成一个大的 libwebrtc.a
    echo 'Combining archives...'
    # 创建一个 MRI 脚本来执行合并操作
    echo \"create /output/libwebrtc.a\" > /tmp/archive.mri
    find out/linux/obj -name \"*.a\" -exec echo \"addlib {}\" \; >> /tmp/archive.mri
    echo \"save\" >> /tmp/archive.mri
    echo \"end\" >> /tmp/archive.mri
    ar -M < /tmp/archive.mri

    # f. 拷产物
    echo 'Copying artifacts...'
    mkdir -p /output/include
    find api rtc_base modules common_audio common_video p2p pc call video audio logging media system_wrappers -name '*.h' -exec cp --parents -t /output/include/ {} +
  "
echo "✅ Linux 版 libwebrtc.a 已生成在 $(pwd)/output/"
